1. Field of the Invention
Embodiments of the invention are related to tools used to develop application software. More specifically, embodiments of the invention provide an intelligent integrated development environment (IDE) tool used for rapid application development of database-aware applications.
2. Description of the Related Art
Developing software applications is a complex task, and IDE tools are available to assist computer programmers with the development process. Currently, IDE tools are available to assist programmers developing applications in a variety of programming languages (e.g., Java®.net, C, C++, C#, etc.). These tools are typically configured with features such as auto-indenting, syntax highlighting, type checking, and a variety of other features that assist the development process. An IDE tool usually includes a text editor that visually displays errors as source code is typed, allowing a developer to correct errors before proceeding with the next line to code. Typically, IDE tools are optimized for different programming languages and errors are identified based on the programming language being used by the developer, often determined a suffix of a project file (e.g., .cpp for a c++ program or .java for a Java® program).
Although very useful, these IDE tools have a variety of limitations. For example, IDE tools provide little support for database statements embedded within the source code of an application. The database statements may retrieve data from, or update/insert data into, the database. In the program source code, database statements are usually specified as text strings in a database query language, such as SQL. The following source code fragment illustrates an embedded SQL query using the Java® programming language:
public interface get_data {// create connection to database@select sql= (“select column_A, column_B from database.table”);// execute sql statement// process query results}Because the actual database query is enclosed within double-quotes, conventional IDE's treat the database statement as a text string, with no restrictions on string content.
Database-aware software applications are typically built using an application programming interface (API) that provides a means to use native query languages (e.g., SQL used to access relational data sources) using API calls included within program source code. For example, the well known JDBC (Java Database Connectivity) API is a specification for connecting programs written in the Java® programming language to a variety of commercially-available databases.
The JDBC API allows developers to embed database statements as text strings that are passed to a program that manages the database. Although effective, this approach may require substantial development time, as the developer is required to write all of the necessary source code to create a connection to a particular database, to pass the text of a database query to the database, to receive query results, and to store the results in an object of the application program; none of which is likely to be part of the core functions of an application. That is, the application program typically retrieves information from the database to perform some other logic or processing. For example, in the code fragment listed above, only the final step of “process query results” is likely to be related to the intended function of the application. The rest is simply overhead the developer must incur for the database-aware application to access an external database. Similarly, the developer must write all of the necessary source code to test each element of the application that accesses an external data source (i.e., each database-statement embedded within the source code of the application). Thus, the developer spends significant time performing tasks that, while necessary, are unrelated to writing the source code that performs the intended functions of an application being developed.
Moreover, the total development experience for a quality application grows exponentially difficult as complexity of the database accesses increase. Further, as the IDE environment does not provide database connectivity or programming assistance for the database statements embedded within the source code of an application program, developers are forced to juggle between various tools, spending substantial time to even get a database-aware application up and running before writing the core of the application, resulting in added cost to the application development process.
Accordingly, there remains a need for an IDE tool that provides rapid application development support for database-aware applications.